﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Sauces.Bussinees.Entities.Almacen;
using Sauces.Bussinees.Entities.Compras;
using Sauces.Bussinees.Logic.Compras.Service;
using Sauces.Bussinees.Logic.Service;
using Microsoft.Practices.Unity;
using System.Web.ModelBinding;

namespace Sauces.Web.Almacen
{
    public partial class FrmProducto : System.Web.UI.Page
    {

        [Dependency]
        public ICategoriaService categoriaService { get; set; }

        [Dependency]
        public IProveedorService proveedorService { get; set; }

        [Dependency]
        public IProductoService productoService { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {

            var action = Request.QueryString["action"];
            var idProducto = Request.QueryString["IdProducto"];

            if (action != null && action == "new")
            {
                fvProducto.DefaultMode = FormViewMode.Insert;
            }
            else if (action != null && idProducto != null & action == "delete")
            {
                var id = Int32.Parse(idProducto.ToString());

                productoService.removeProducto(id);
                Response.Redirect("FrmListaProducto.aspx");
            }

        }

        public Producto GetProducto([QueryString("IdProducto")]Int32? id)
        {
            if (id.HasValue)
            {
                return productoService.getFromProductoById(id.Value);
            }
            return null;
        }

        public IEnumerable<Categoria> GetCategorias()
        {
            return categoriaService.getAllCategoria();
        }

        public IEnumerable<Proveedor> GetProveedor()
        {
            return proveedorService.getAllProveedor();
        }

        public void AddProducto(Producto producto)
        {
            if (ModelState.IsValid)
            {
                productoService.addProducto(producto);
                Response.Redirect("FrmListaProducto.aspx");
            }
        }

        public void UpdateProducto(Producto producto)
        {
            if (ModelState.IsValid)
            {
                productoService.upDateProducto(producto);
                Response.Redirect("FrmListaProducto.aspx");
            }
        }

    }
}